package com.burns.rbac.commons.exception;

import com.alibaba.fastjson.JSON;
import com.burns.rbac.commons.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 项目的全局异常管理器
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    /**
     * 系统异常；意料之外
     *
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)//只有抛出的异常是Exception的子类就会调用这个方法
    public R systemException(Exception e) {
        //1.记录异常的信息到日志文件
        log.error("系统异常", e);

        //2.提示用户
        return R.error("系统繁忙，请稍后再试！");
    }


    /**
     * 业务异常：意料之中
     * @param e
     * @return
     */
    @ExceptionHandler(BusinessException.class)//抛出的异常是BusinessException的子类就会调用这个方法
    public R businessException(BusinessException e) {
        //1.记录异常的信息到日志文件
        log.error("业务异常", e);

        //2.提示用户
//        return R.error(e.getMsg() + "--->:" + e.getCode());
//        return R.error(e.getCode() + "--->:" + e.getMsg());
        return R.error(e.getCode(),e.getMsg());
    }

}
